package com.etc.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.etc.entity.Users;

@Controller
public class ParameterController {

	@RequestMapping("test1")
	public String test1(HttpServletRequest request) {
		// 接收参数以前的写法
		request.getParameter("参数名");
		System.out.println("test1 : name :" + request.getParameter("name"));
		return "test1";
	}

	// 例如，我们要传递的参数名为name[String] age[int]
	// 方法参数中的名字 和 传递过来的参数名字 一致
	@RequestMapping("test2")
	public String test2(String name, int age) {
		System.out.println("test2 :age " + age + ", name " + name);
		return "test2";
	}

	// 如果传递很多个参数，则不方便，当这些参数可以封装成一个对象的时候，我们的代码就又简化了
	// 传递参数的时候 传递过来的参数必须是user的属性名一致
	@RequestMapping("test3")
	public String test3(Users user) {
		System.out.println("test3 :  name" + user.getName() + ", id: " + user.getId());
		return "test3";
	}

	// 如果传递很多个参数，则不方便，当这些参数可以封装成一个对象的时候，我们的代码就又简化了
	// 传递参数的时候 传递过来的参数必须是user的属性名一致
	@RequestMapping(value = "test4", method = RequestMethod.POST)
	public String test4(Users user) {
		System.out.println("test4 :  name" + user.getName() + ", id: " + user.getId());

		return "test4";
	}

	// 控制器数据 传递给 视图层
	@RequestMapping(value = "test5")
	public String test5(HttpServletRequest request) {
		System.out.println("test5");
		// 携带数据给视图
		request.setAttribute("key", "value");
		return "test5";
	}

	// Model[携带数据的对象]和View[视图资源对象]
	@RequestMapping(value = "test6")
	public ModelAndView test6() {

		// 创建MOdelAndView的对象
		ModelAndView mv01 = new ModelAndView();
		mv01.setViewName("test6");
		mv01.addObject("key6", "value6");

		System.out.println("test6");

		return mv01;
	}

	// Model[携带数据的对象]和View[视图资源对象]
	@RequestMapping(value = "test7")
	public ModelAndView test7() {

		List<String> list = new ArrayList();
		list.add("abc");
		list.add("ABC");

		Map<Integer, String> map = new HashMap();
		map.put(1, "巴黎圣母院修复要10年");
		map.put(2, "奔驰说，感谢巴黎圣母院");
		map.put(3, "视觉中国说，感谢以上两家");
		// 创建MOdelAndView的对象
		ModelAndView mv01 = new ModelAndView("test7");
		mv01.addObject("key7", list);
		
		mv01.addObject("key8", map);

		System.out.println("test7");

		return mv01;
	}
}
